
local player_attribute = require 'types.player_attribute'
local register = player_attribute.register

register('英雄刷新次数',10)

ac.game:event '玩家-随机英雄'(function(_,player)
    local hero = player.hero
    local lock = player:get_data('不会获取英雄') or {}
    local weight = {}
    local count = 3
    for a,data in ipairs(ac.hero_list) do
        if lock[data.name]==nil and (hero==nil or data.name~=hero.name) then
            table.insert(weight,data)
        end
    end
    local data = table.random_table(weight,count)
    player:set_data('选择英雄数据',data)
    player:notify('玩家-选择英雄面板',player,data,function(temp)
        local hero = player.hero
        local name = temp.name
        lock[name] = true
        if hero then
            player:notify('玩家-更换英雄',player,name)
        else
            player:notify('玩家-选择英雄',player,name)
        end
    end)
    
end)

ac.sync:event '同步-刷新选择英雄'(function(_,player)
    local hero = player.hero
    if player:get('英雄刷新次数',0)>0 then
        player:add('英雄刷新次数',-1)
        player:notify('玩家-随机英雄',player)
        return
    end
    local xd = player:get_data('付费英雄刷新')
    if player:get('杀敌')>=xd then
        player:set_data('付费英雄刷新',xd + 500)
        player:add('杀敌',-xd)
        player:notify('玩家-随机英雄',player)
    else
        show_ui_effect(player,1920/2,750,'杀敌')
    end
end)


ac.game:event '玩家-更换英雄'(function(_,player,name)
    local hero = player.hero
    if hero.fh_timer then
        hero.fh_timer:on_timer()
    end
    local data = ac.lni('unit',name)
    local ex = hero:get('攻击距离') - hero:get_slk('rangeN1')
    hero:transformat(name)
    if not getmetatable(data) then
        setmetatable(data, ac.unit)
        data.__index = data
        data.__tostring = ac.unit.__tostring
    end
    setmetatable(hero, data)
    local range2 = hero:get_slk('rangeN1') + ex
    local abi = hero['技能'] or name
    hero:set('攻击距离',range2)
    hero:add_skill(abi,'英雄')
    player:notify('玩家-更换英雄完毕',player,hero)
end)


--[进阶] 英雄每10级进阶一次
ac.sync:event '同步-点击经验条'(function(_,player)
    local hero = player.hero
    local count = hero and hero:get_data('转生次数',0)
    if count>0 then
        local unit = player:get_data('挑战进阶')
        if unit and unit:is_alive() then
            return
        end
        local point = hero:get_point()
        local unit = player:create_enemy('[挑战]英雄晋升',point)
        unit:set_enemy_level(10,'10秒挑战')
        unit:add_type('精英')
        unit_add_life2(unit)
        unit:add_buff '分离演出'{time = 2}
        unit:add_buff '挑战限时'{time = 32}
        unit:issue_order('attack',hero)
        unit:event '单位-死亡'(function()
            hero:set_data('转生次数',count - 1)
            player:notify('玩家-随机英雄',player)
        end)
        player:set_data('挑战进阶',unit)
    end
end)

